import redis
import json
import time
import pymongo

client = redis.Redis()
handler = pymongo.MongoClient().chatper_8.people_info

people_info_list = []
get_count = 0  # 增加了一个计数变量,每获取一次Redis中的数据就让变量加1。
while True:
    people_info_json = client.lpop('people_info')
    if people_info_json:
        people_info = json.loads(people_info_json.decode())
        people_info_list.append(people_info)
        '''
        在Redis为空的情况下,如果people_info_list中有数据,不论有多少数据,只要请求Redis的次数
        为1000的倍数,那么就批量插入数据库。这样做的好处是,保证people_info_list中的数据最多等
        待100秒就会被插入数据库。这里使用了%实现取余操作,get_count%100。的结果为get_count
        除以1000的余数。如果结果为o.则表示get_count正好是1000的整数倍。
        '''
        if len(people_info_list) >= 1000:
            handler.insert_many(people_info_list)
            people_info_list = []
    else:
        if people_info_list and get_count % 1000 == 0:
            handler.insert_many(people_info_list)
            people_info_list = []
        time.sleep(0.1)  # 在本次发现Redis为空的情况下,暂停0.1秒,这样做可以显著降低CPU的占用。
    get_count += 1
